/**
 * 智能通风系统模拟数据模块
 * 用于在Android接口不可用时提供模拟数据
 */

console.log('📦 智能通风系统模拟数据模块已加载');

// 设备类型常量
const VENTILATION_DEVICE_TYPES = {
    NATURAL_WINDOW: 'NATURAL_WINDOW',    // 自然通风窗
    AXIAL_WINDOW: 'AXIAL_WINDOW',        // 轴流通风窗
    CIRCULATION_WINDOW: 'CIRCULATION_WINDOW', // 环流通风窗
    AXIAL_FAN: 'AXIAL_FAN',              // 轴流风机
    CIRCULATION_FAN: 'CIRCULATION_FAN',  // 环流风机
    UNKNOWN: 'UNKNOWN'                   // 未知类型
};

// 导出智能通风系统的模拟数据生成函数
window.IntelligentVentilationMockData = {
    // 是否应该使用模拟数据
    shouldUseMockData: function() {
        // 使用common.js中定义的全局shouldUseMockData函数
        if (typeof window.shouldUseMockData === 'function') {
            return window.shouldUseMockData();
        }
        // 如果全局函数不可用，则使用备用判断逻辑
        return !window.Android || !window.Android.getVentilationData;
    },
    
    // 生成模拟数据
    generateMockData: function(deviceType) {
        console.log('📦 生成模拟数据:', deviceType);
        const mockData = [];
        let deviceCount = 0;

        switch (deviceType) {
            case VENTILATION_DEVICE_TYPES.NATURAL_WINDOW:
                deviceCount = 8;
                break;
            case VENTILATION_DEVICE_TYPES.AXIAL_WINDOW:
                deviceCount = 0;
                break;
            case VENTILATION_DEVICE_TYPES.CIRCULATION_WINDOW:
                deviceCount = 6;
                break;
            case VENTILATION_DEVICE_TYPES.AXIAL_FAN:
                deviceCount = 6;
                break;
            case VENTILATION_DEVICE_TYPES.CIRCULATION_FAN:
                deviceCount = 6;
                break;
        }

        for (let i = 1; i <= deviceCount; i++) {
            mockData.push({
                name: `${i}#${getDeviceDisplayName(deviceType)}`,
                englishName: `${deviceType}_${i}`,
                address: `A${i}`,
                unit: '',
                description: `${i}号${getDeviceDisplayName(deviceType)}`,
                value: Math.random() > 0.5 ? '1' : '0'
            });
        }

        // 为自然窗添加温度数据
        if (deviceType === VENTILATION_DEVICE_TYPES.NATURAL_WINDOW) {
            mockData.push({
                name: '仓内温度',
                englishName: 'internal_temperature',
                address: 'T1',
                unit: '℃',
                description: '仓内温度',
                value: (15 + Math.random() * 10).toFixed(2)
            });
        }

        return mockData;
    },
    
    // 模拟控制设备
    mockControlDevice: function(deviceType, deviceId, action, pointAddress) {
        console.log('📦 模拟控制设备:', deviceType, deviceId, action, '地址:', pointAddress);
        return {
            success: true,
            msg: '操作成功(模拟)',
            data: { deviceId, action, pointAddress, status: action === 'on' ? 1 : 0 }
        };
    },
    
    // 模拟批量控制设备
    mockControlAllDevices: function(deviceType, action) {
        console.log('📦 模拟批量控制设备:', deviceType, action);
        return {
            success: true,
            msg: '批量操作成功(模拟)',
            data: { deviceType, action, status: action === 'on' ? 1 : 0 }
        };
    }
};

/**
 * 获取设备类型对应的中文名称
 * @param {string} deviceType 设备类型常量
 * @returns {string} 设备类型中文名称
 */
function getDeviceDisplayName(deviceType) {
    switch (deviceType) {
        case VENTILATION_DEVICE_TYPES.NATURAL_WINDOW: return '自然通风窗';
        case VENTILATION_DEVICE_TYPES.AXIAL_WINDOW: return '轴流通风窗';
        case VENTILATION_DEVICE_TYPES.CIRCULATION_WINDOW: return '环流通风窗';
        case VENTILATION_DEVICE_TYPES.AXIAL_FAN: return '轴流风机';
        case VENTILATION_DEVICE_TYPES.CIRCULATION_FAN: return '环流风机';
        default: return '未知设备';
    }
}

// ---- 新增：通风参数配置模拟数据 ----

// 模拟存储在数据库中的配置数据
let mockVentilationConfig = {
    [VENTILATION_DEVICE_TYPES.NATURAL_WINDOW]: {
        targetTemperature: 25,
        targetHumidity: 60,
        startTime: '08:00',
        endTime: '18:00',
        duration: 30
    },
    [VENTILATION_DEVICE_TYPES.AXIAL_FAN]: {
        targetTemperature: 25,
        targetHumidity: 60,
        startTime: '08:00',
        endTime: '18:00',
        duration: 30
    },
    [VENTILATION_DEVICE_TYPES.CIRCULATION_FAN]: {
        targetTemperature: 25,
        targetHumidity: 60,
        startTime: '08:00',
        endTime: '18:00',
        duration: 30
    }
};

// 扩展 IntelligentVentilationMockData 对象
Object.assign(window.IntelligentVentilationMockData, {
    /**
     * 获取通风参数配置
     * @returns {Promise<object>}
     */
    getVentilationConfig: function() {
        console.log('📦 模拟获取通风参数配置:', mockVentilationConfig);
        return new Promise(resolve => {
            setTimeout(() => {
                resolve({
                    success: true,
                    data: JSON.parse(JSON.stringify(mockVentilationConfig)) // 返回深拷贝以模拟真实接口
                });
            }, 300); // 模拟网络延迟
        });
    },

    /**
     * 保存通风参数配置
     * @param {object} configData
     * @returns {Promise<object>}
     */
    saveVentilationConfig: function(configData) {
        console.log('📦 模拟保存通风参数配置:', configData);
        return new Promise(resolve => {
            setTimeout(() => {
                // 更新模拟数据存储
                mockVentilationConfig = { ...mockVentilationConfig, ...configData };
                console.log('📦 更新后的模拟配置:', mockVentilationConfig);
                resolve({
                    success: true,
                    msg: '配置保存成功(模拟)'
                });
            }, 300);
        });
    }
}); 